[初心者向け]VPC作成からEC2インスタンス起動までを構成図見ながらやってみる(その1)
はじめに
こんにちは、AWS事業本部のニシヤマです。はいマスキュラー。
いきなりですが私は前職からAWSを触ったのですが、それ以前はVPS(仮想専用サーバ)を利用してました。 VPSでサーバを起動する場合、コントロールパネルでポチポチしていくと特にネットワークを意識せずにSSH接続まで出来ていたのですが、AWSではVPC作成などが必要で初めてAWSを触った時に「今どうゆう状況?」って思いながら進めたことを覚えています。(今ではAmazon LightsailでVPS立ち上げも可能です)
ドキュメントを読み込んで理解してから実施すれば理解しながらできるのですが「AWSアカウント作ったので試しにサーバ1台立ち上げたい」って場合にはちょっと情報量が多い気がします。
今回はそんな初心を思い出してAWSアカウント作成後にVPCの作成からEC2起動して、SSH接続するまでを状況を構成図で見ながら進めたいと思います。
最終的に上記のような構成を目指します。
注意点
今回の環境はあくまでも検証用途などのためにEC2を起動してSSH接続するまでの手順をご紹介のため、細かなパラメータの説明は省略します。本番環境でのご利用の際はドキュメントなどの情報を参照し、セキュリティなども考慮した構成の構築をご検討ください。
やってみる
AWSアカウント作成直後の状態
AWSアカウント作成した状態ですと以下の様な状態になります。本来は複数リージョンとかデフォルトのVPCやサブネット、セキュリティグループとかありますが一旦考慮しません。
東京リージョンにVPCを作成する
今回の構成は複数あるリージョンから東京リージョンを利用します。右上のリージョンのリストから「アジアパシフィック (東京)」を選択して東京リージョンに切り替えます。
次に左上のサービスメニューで「VPC」と入力し、「VPC」メニューに移動します。左のメニューでVPCをクリックし、「VPCの作成」をクリックします。
「名前タグ」に区別しやすいVPCの名称(AWSで構築するシステム名など)、「IPv4 CIDR ブロック」に今回AWSで構築するシステムに割り当てることが可能な以下の範囲内で、/16〜/28のネットマスクCIDRブロックを入力します。
- 10.0.0.0 - 10.255.255.255 (10/8 プレフィックス)
- 172.16.0.0 - 172.31.255.255 (172.16/12 プレフィックス)
- 192.168.0.0 - 192.168.255.255 (192.168/16 プレフィックス)
この時注意する点ですが今回は検証用環境の為どんなCIDRブロックでも問題ありませんが、実際のシステムの場合は他システムとの間でプライベートIPで通信するなどの要件が出てくる可能性があるので、他ネットワークと重複しない値を利用することをおすすめします。
あとは右下の作成をクリック。
これでVPCの作成が完了しました。今回「10.0.0.0/16」を割り当てて最大65,536個のIPアドレスが割り当て可能なVPCを作成しました。また、この時VPCのトラフィックをルーティングするためのルールを登録するデフォルトの「ルートテーブル」というリソースも作成されていますが、この段階ではVPCのCIDRブロックの通信はVPC内でルーティングするというルールしか登録されていません。
他にも「ネットワーク ACL」というものが作成されていますが、今回は操作しないため割愛します。
今の構成は以下の様になっています。
VPCにサブネットを作成する
VPCにそのままEC2インスタンスを起動は出来ないので次はサブネットを作成します。今回はインターネットへの通信が可能なパブリックサブネットとして作成します。 「VPC」の画面の左メニューでサブネットをクリックし、「サブネットの作成」をクリックします。
「名前タグ」に区別しやすいサブネットの名称、VPCには先ほど作成したVPCを、アベイラビリティーゾーンは「ap-northeast-1a」を選択し、作成をクリックします。 (この時「名前タグ」はインターネットへ通信可能なパブリックサブネットなのか、インターネットへ通信しないプライベートサブネットなのかもわかる名前の方が良いでしょう) IPv4 CIDR ブロックには、先ほどVPCに割り当てたCIDRブロックの範囲〜/28のネットマスクの範囲内でサブネットを作成することができます。今回は「10.0.1.0/28」を入力して作成をクリックします。 また作成したサブネットは自動的にデフォルトのルートテーブルに関連づけられます。
今の構成は以下の状態です。
インターネットゲートウェイを作成して、VPCにアタッチする
VPCとデフォルトのルートテーブルと、VPC内にサブネットの作成が完了しました。ただインターネットへの出入り口となる「インターネットゲートウェイ」がまだありません。 「VPC」の画面の左メニューでインターネットゲートウェイをクリックし、「インターネットゲートウェイの作成」をクリックします。 「名前タグ」のみ入力して作成をクリックします。ただし、この時点では状態が「detached」となっておりどのVPCとも紐づいていないのでVPCへのアタッチが必要です。 作成したインターネットゲートウェイをクリックして、アクションから「VPC にアタッチ」を選択します。 インターネットゲートウェイをアタッチするVPCを選択し「アタッチ」をクリックします。
インターネットゲートウェイの状態が「attached」になればVPCとの紐付けが完了です。
今の構成は以下の状態です。
ルートテーブルを作成する
インターネットゲートウェイを作成したことで、インターネットへの出入り口は確保できましたが、今のままではどのIPアドレス宛の通信をインターネットゲートウェイへ向ければ良いか判断がつきません。 このルーティング情報「ルート」をルートテーブルに登録します。 すでにVPC作成時にデフォルトのルートテーブルが作成されているのでそちらに追加のルートを登録してもOKですが、新規作成するサブネットは自動的にデフォルトのルートテーブルへ関連付けられるため、インターネットへ通信しないプライベートサブネットを作る可能性がある場合はおすすめしません。
「VPC」の画面の左メニューでルートテーブルをクリックし、「ルートテーブルの作成」をクリックします。 「名前タグ」とVPCには先ほど作成したVPCを選択し、作成をクリックします。
ルートテーブルにインターネットゲートウェイへのルートを登録する
今の段階ではデフォルトのルートテーブルと同じく、VPC内宛の通信のルートしか登録されていません。そのため、インターネットゲートウェイ宛の通信を登録します。 作成したルートテーブルを選択し、「ルート」タブを選択、「ルートの編集」をクリックします。 「ルートの追加」をクリックし、送信先に「0.0.0.0/0」(デフォルトルート)、ターゲットに「igw-」から始まるインターネットゲートウェイのIDを入力して、ルートの保存をクリックします。 これでVPC内宛以外の通信に関してはインターネットゲートウェイへ向くように設定できました。
ルートテーブルにサブネットを関連付ける
インターネット通信用のルートテーブルを作成しましたがサブネットは関連付いていないので紐づける必要があります。 作成したルートテーブルから「サブネットの関連付け」タブを選択、「サブネットの関連付けの編集」をクリックします。 先ほど作成していたサブネットを選択し、保存をクリックします。
これで作成したサブネットがインターネット通信可能なパブリックサブネットになりました。
この時点で以下の構成になりました。
長くなってしまったので、今回はここまでにしてEC2の起動からSSHへの接続に関しては次回に書くことにします。
AWSマネジメントコンソールでの操作箇所が不明な場合はこちらの記事も参照してみてください。
おわりに
冒頭にも書きましたが、VPSなどのサーバを利用しているとSSHが繋がる状態からスタートしてしまうのでネットワーク周りを意識しなくてもOKなことと、ネットワーク周りはイメージがつきづらいこともあり作るだけでも意識するべきことが多々あるので、今回は「今どんな状態?」が分かりやすいように構成図も添付してみました。 また、AWSの場合一つのリソースを作成した時に同時に別のリソースが作成されており、後で気づいた際に「あれ、これいつ作ったっけ?」ってなることが多々あったように思います。
引き続き次回は作成したネットワーク環境を利用してEC2の起動をしちゃいます!